# -*- coding:utf-8 -*-
# date:2017-7-15
# author:Alex

import re
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

class city_to_num(object):
    # 前程无忧的城市代码对应字典
    area = {'厚街镇': '030830', '彭水县': '063100', '德宏': '251600', '顺德区': '030602', '黔西南': '260800', '阿勒泰': '311300', '美国': '363001', '巩义市': '170208', '高陵县': '200213', '大同': '210400', '滨湖区': '070404', '平度市': '120309', '九江': '130300', '四平': '240600', '肯尼亚': '364006', '慈溪市': '080307', '印度': '361009', '泉州': '110400', '南山区': '040300', '江门': '031500', '株洲': '190300', '马尾区': '110204', '嘉峪关': '270400', '章丘市': '120210', '白城': '241000', '蒙古': '361022', '泰国': '361005', '图木舒克': '311100', '南城区': '030802', '进贤县': '130209', '松北区': '220205', '海北': '320500', '徐汇区': '020300', '邵阳': '191000', '苏丹': '364003', '吉安': '130900', '铁岭': '231200', '吴中区': '070303', '经济技术开发区': '240207', '来宾': '141300', '滨海新区': '051300', '伊春': '220300', '长清区': '120206', '重庆': '060000', '黔江区': '061400', '禄劝县': '250212', '武侯区': '090204', '汉南区': '180209', '泰州': '071800', '蒲江县': '090218', '涪陵区': '061300', '宾县': '220211', '委内瑞拉': '363009', '加拿大': '363002', '榆林': '200800', '大邑县': '090217', '福建省': '110000', '西咸新区': '200219', '横沥镇': '030810', '唐山': '160500', '宝山区': '021200', '太原': '210200', '安康': '201000', '吕梁': '211200', '闽侯县': '110206', '西班牙': '362005', '巢湖市': '150211', '日喀则': '300300', '科威特': '361020', '威海': '120600', '玉林': '140600', '汽车产业开发区': '240210', '武清区': '051100', '曲靖': '250300', '眉山': '091200', '金山区': '021400', '秘鲁': '363007', '巴彦县': '220212', '无锡新区': '070405', '桥头镇': '030811', '伊朗': '361015', '芙蓉区': '190201', '西昌': '091900', '荆门': '180800', '随州': '181200', '天水': '270600', '武汉': '180200', '聊城': '121700', '常平镇': '030814', '下城区': '080203', '阳江': '032800', '大连保税区': '230314', '周口': '170800', '历城区': '120205', '乐东': '102000', '绵阳': '090300', '北辰区': '051000', '二道区': '240204', '毕节': '260700', '企石镇': '030809', '邯郸': '160700', '黄埔区': '030206', '辽阳': '231100', '济南': '120200', '常德': '190700', '黄陂区': '180212', '高埗镇': '030819', '莱芜': '121800', '渭南': '200700', '登封市': '170212', '成都': '090200', '和平区': '230204', '龙岗区': '040600', '吉林': '240300', '浦口区': '070207', '新都区': '090208', '陕西省': '200000', '阜新': '231500', '中堂镇': '030818', '谢岗镇': '030812', '城口县': '063000', '滨湖新区': '150206', '甘孜': '092100', '宝安区': '040500', '天心区': '190202', '黔南': '261000', '伊犁': '310500', '襄阳': '180500', '乌海': '281000', '临沧': '251800', '北海': '140500', '东川区': '250205', '墨西哥': '363003', '黑龙江省': '220000', '坦桑尼亚': '364008', '香洲区': '030501', '广东省': '030000', '南通': '070900', '葡萄牙': '362006', '上饶': '131200', '长安区': '200209', '五华区': '250201', '斗门区': '030502', '鞍山': '230400', '屯昌': '101200', '阿富汗': '361017', '大东区': '230201', '莲湖区': '200201', '石景山区': '010700', '白云区': '030205', '无锡': '070400', '崇文区': '010300', '桐庐县': '080212', '长丰县': '150212', '巴西': '363004', '丹阳': '072100', '朝阳': '231400', '奥地利': '362012', '三亚': '100300', '泰兴': '072300', '匈牙利': '362017', '中山': '030700', '洪山区': '180207', '连云港': '071200', '黄南': '320600', '市中区': '120202', '运城': '210300', '丹麦': '362021', '波兰': '362008', '缅甸': '361010', '海曙区': '080301', '保定': '160400', '碑林区': '200203', '黄石': '180400', '卢湾区': '020200', '成华区': '090205', '东丽区': '050700', '江汉区': '180202', '保加利亚': '362015', '哈尔滨': '220200', '溧水区': '070212', '雅安': '091800', '寮步镇': '030815', '官渡区': '250203', '嘉兴': '080700', '北仑区': '080304', '丽江': '250600', '济阳县': '120208', '尼日利亚': '364014', '克孜勒苏柯尔克孜': '311700', '河西区': '050300', '巴南区': '060900', '阿拉尔': '310900', '经开区': '150205', '怀柔区': '011500', '天宁区': '070501', '松山湖区': '030833', '常熟': '070700', '铁西区': '230209', '印度尼西亚': '361007', '开福区': '190204', '和田': '311600', '胶州市': '120307', '方正县': '220210', '岳阳': '190600', '武隆县': '063900', '南长区': '070402', '郑东新区': '170213', '户县': '200212', '金州区': '230306', '麻涌镇': '030817', '阿城区': '220208', '台江区': '110202', '玻利维亚': '363010', '长春': '240200', '红桥区': '050600', '哈萨克斯坦': '361013', '潼南县': '062100', '晋中': '211000', '十堰': '180600', '邢台': '161100', '安宁市': '250214', '南昌县': '130206', '红谷滩新区': '130210', '汉中': '200900', '雁塔区': '200206', '肥东县': '150213', '槐荫区': '120203', '东莞': '030800', '西藏': '300000', '平阴县': '120207', '钦州': '140900', '衡阳': '190500', '银川': '290200', '俄罗斯': '362019', '万州区': '061200', '奉节县': '063800', '六安': '151200', '花都区': '030208', '盐城': '071300', '越秀区': '030201', '广西': '140000', '大庆': '220500', '六合区': '070208', '璧山县': '062500', '沙河口区': '230303', '山东省': '120000', '洋浦经济开发区': '100400', '青羊区': '090201', '蓝田县': '200210', '石河子': '310800', '杨浦区': '020900', '罗马尼亚': '362016', '从化': '030212', '延吉': '240800', '普洱': '251100', '商洛': '201100', '戚墅堰区': '070503', '龙华新区': '041000', '江北区': '060300', '河东区': '050200', '塔城': '311500', '沈北新区': '230206', '大理': '250500', '丽水': '081000', '榆树市': '240211', '荆州': '180700', '驻马店': '171400', '赣州': '130800', '海宁': '081600', '姑苏区': '070301', '忠县': '062800', '政务区': '150209', '爱尔兰': '362007', '阿坝': '092200', '高淳区': '070213', '孟加拉国': '361023', '萍乡': '130500', '镇江': '071000', '梁平县': '063200', '德阳': '090600', '张家界': '191400', '福田区': '040100', '石排镇': '030808', '沈河区': '230207', '昌江': '101900', '平顶山': '171000', '道滘镇': '030827', '平房区': '220204', '合川区': '060600', '津南区': '050900', '宁波': '080300', '宣武区': '010400', '济源': '171900', '兰州': '270200', '南沙区': '030209', '吉林省': '240000', '菲律宾': '361006', '荣昌县': '062400', '长海县': '230310', '湛江': '031700', '澳门': '340000', '濮阳': '171600', '南开区': '050400', '寻甸县': '250213', '三水区': '030604', '青岛': '120300', '阎良区': '200207', '贺州': '141500', '罗源县': '110208', '延寿县': '220215', '彭州市': '090211', '崇安区': '070401', '万江区': '030804', '高新园区': '230312', '山西省': '210000', '坪山新区': '040800', '燕郊开发区': '161300', '江苏省': '070000', '云南省': '250000', '浙江省': '080000', '海南': '320700', '巴中': '092000', '大洋洲': '365000', '宜良县': '250209', '富阳市': '080210', '安顺': '260500', '新密市': '170210', '闽清县': '110209', '中牟县': '170207', '辽源': '240400', '盘锦': '231300', '山南': '300500', '青云谱区': '130203', '宜兴市': '070408', '荥阳市': '170209', '阿克苏': '310600', '天门': '181600', '渝北区': '060700', '惠山区': '070406', '达州': '091700', '七台河': '221300', '保山': '251200', '玉溪': '250400', '江宁区': '070211', '忻州': '211100', '尚志市': '220217', '奉贤区': '021800', '浐灞生态区': '200217', '高新技术产业开发区': '240208', '博尔塔拉': '311900', '吐鲁番': '311400', '肇庆': '031800', '泰安': '121100', '清远': '031900', '雨花区': '190205', '新西兰': '365002', '鄂州': '181000', '河北省': '160000', '德州': '121300', '宜昌': '180300', '鹤岗': '221000', '长安镇': '030832', '儋州': '100800', '温江区': '090209', '茶山镇': '030807', '漯河': '171500', '昌都': '300600', '朔州': '210900', '浏阳市': '190209', '石碣镇': '030805', '安哥拉': '364011', '甘井子区': '230304', '汉阳区': '180204', '攀枝花': '091000', '龙泉驿区': '090206', '晋城': '210700', '哈密': '310700', '陵水': '102100', '莞城区': '030801', '郑州': '170200', '阿根廷': '363005', '海西': '320400', '阿尔及利亚': '364004', '摩洛哥': '364013', '荷兰': '362023', '香坊区': '220206', '沧州': '160800', '绥化': '220400', '三沙': '101500', '天河区': '030204', '遵义': '260300', '青白江区': '090207', '道外区': '220203', '滨江区': '080206', '昌吉': '311200', '建德市': '080211', '双城市': '220216', '益阳': '190800', '白下区': '070202', '都江堰市': '090210', '南阳': '170600', '滁州': '150900', '玄武区': '070201', '余杭区': '080207', '农安县': '240214', '富民县': '250208', '武进区': '070505', '珠海高新区': '030506', '闸北区': '020700', '呼和浩特': '280200', '梅州': '032600', '长沙': '190200', '中原区': '170201', '盘龙区': '250202', '东城区': '030803', '丰台区': '010600', '韩国': '361002', '绍兴': '080500', '石林彝族自治县': '250210', '营口': '230500', '海淀区': '010800', '普兰店市': '230308', '静海县': '051500', '河北区': '050500', '沈阳': '230200', '连江县': '110207', '齐齐哈尔': '220600', '锡山区': '070407', '崇州市': '090213', '庐阳区': '150202', '大足区': '062300', '福清市': '110212', '镇海区': '080305', '铜川': '200500', '南宁': '140200', '新余': '130600', '潮州': '032000', '锦州': '230700', '文昌': '100500', '白山': '240900', '鄂尔多斯': '280800', '万山海洋开发试验区': '030508', '新建县': '130207', '其他': '366000', '江东区': '080302', '长寿区': '061700', '塘厦镇': '030828', '乌克兰': '362013', '余姚市': '080308', '松江区': '021500', '建邺区': '070204', '静安区': '020500', '英国': '362001', '资阳': '091400', '白沙': '101800', '邛崃市': '090212', '宿迁': '072000', '玉树': '320900', '巫溪县': '063600', '大连': '230300', '海东': '320300', '淄博': '120700', '云浮': '032900', '包河区': '150204', '二七区': '170202', '北城新区': '150210', '新站区': '150207', '通河县': '220214', '渝中区': '060100', '江西省': '130000', '望牛墩镇': '030822', '青海省': '320000', '漳州': '110500', '番禺区': '030207', '临汾': '210500', '通化': '240500', '越南': '361011', '延安': '200600', '惠济区': '170206', '临夏': '271400', '西岗区': '230301', '呼兰区': '220207', '仓山区': '110203', '石家庄': '160200', '赤峰': '280300', '智利': '363006', '宜宾': '090700', '锦江区': '090202', '怀化': '191100', '双流县': '090215', '丰都县': '062700', '庄河市': '230309', '金昌': '270300', '闵行区': '021100', '牡丹江': '220700', '巴基斯坦': '361018', '法库县': '230211', '万宁': '100700', '金华': '080600', '景德镇': '130400', '芬兰': '362011', '横琴新区': '030504', '莆田': '110600', '瑞士': '362020', '青浦区': '021600', '池州': '151500', '净月经济开发区': '240209', '五家渠': '311000', '广安': '091300', '新乡': '170700', '哥伦比亚': '363008', '辽中县': '230212', '永川区': '060800', '张家口': '160900', '琼中': '101600', '南关区': '240202', '五指山': '101000', '云阳县': '064000', '比利时': '362022', '菏泽': '121400', '永泰县': '110210', '三门峡': '171800', '乌兰察布': '281200', '大兴区': '011400', '湘西': '191500', '开平': '032700', '东湖区': '130201', '永州': '191300', '贵港': '141000', '喀什地区': '310400', '蚌埠': '150600', '大朗镇': '030816', '武昌区': '180205', '楚雄': '251700', '光明新区': '040700', '阜阳': '150700', '通辽': '280700', '宝鸡': '200400', '临高': '101400', '平凉': '271000', '马来西亚': '361003', '栖霞区': '070209', '即墨市': '120308', '佳木斯': '220800', '内蒙古': '280000', '遂宁': '091500', '琼海': '100600', '硚口区': '180203', '厦门': '110300', '道里区': '220201', '福州': '110200', '相城区': '070304', '西湖区': '130202', '铜仁': '260600', '杭州': '080200', '潜江': '181500', '桂林': '140300', '江岸区': '180201', '青山区': '180206', '南昌': '130200', '金堂县': '090214', '禅城区': '030601', '南京': '070200', '恩施': '181800', '四川省': '090000', '城阳区': '120305', '开封': '170400', '贵阳': '260200', '清溪镇': '030825', '大岭山镇': '030821', '亚洲': '361000', '意大利': '362004', '天津': '050000', '金湾区': '030503', '信阳': '171200', '崇左': '141400', '芜湖': '150300', '秦淮区': '070203', '包头': '280400', '定安': '101100', '洛阳': '170300', '酒泉': '270500', '淮南': '151100', '南平': '110800', '宝坻区': '051200', '拉萨': '300200', '宽城区': '240203', '承德': '161000', '廊坊': '160300', '邓州': '172000', '蜀山区': '150203', '虎丘区': '070302', '海南省': '100000', '上海': '020000', '沙田镇': '030826', '东方': '100900', '宁海县': '080310', '拱墅区': '080201', '徐州': '071100', '阳泉': '210800', '临安市': '080209', '安阳': '170900', '钟楼区': '070502', '凤岗镇': '030831', '吴江区': '070305', '湘潭': '190400', '昭通': '251300', '通州区': '011100', '锡林郭勒盟': '281400', '商河县': '120209', '管城回族区': '170203', '盐田区': '040400', '武威': '270700', '日照': '121200', '自贡': '090800', '滨州': '121500', '宁乡县': '190208', '康平县': '230203', '埃塞俄比亚': '364005', '五常市': '220218', '乌鲁木齐': '310200', '望城区': '190206', '黄江镇': '030823', '张家港': '071400', '内江': '090900', '长宁区': '020400', '普陀区': '020600', '崇明县': '021900', '东西湖区': '180208', '淳安县': '080213', '虎门镇': '030829', '增城': '030211', '怒江': '251900', '汕头': '030400', '挪威': '362009', '开发区': '230311', '黄山': '151000', '双鸭山': '221100', '佛山': '030600', '济宁': '120900', '贵州省': '260000', '梧州': '140700', '咸宁': '181300', '南岗区': '220202', '商丘': '171300', '泸州': '090500', '文山': '251400', '西山区': '250204', '黑河': '221200', '昆明': '250200', '台湾': '350000', '土耳其': '361019', '广元': '091600', '柳州': '140400', '长沙县': '190207', '双阳区': '240206', '呈贡区': '250206', '黄浦区': '020100', '抚顺': '230600', '阿拉善盟': '281500', '依兰县': '220209', '西城区': '010200', '珠三角': '01', '青山湖区': '130205', '高明区': '030605', '荔湾区': '030202', '六盘水': '260400', '抚州': '131100', '白俄罗斯': '362014', '石柱县': '062900', '靖江': '072500', '莫桑比克': '364010', '吴忠': '290300', '铜梁县': '062200', '仙桃': '181400', '海珠区': '030203', '新郑市': '170211', '临潼区': '200208', '秀山县': '063500', '日本': '361001', '国家民用航天产业基地': '200218', '斯里兰卡': '361008', '汕尾': '032400', '瓦房店市': '230307', '绿园区': '240205', '龙岩': '111000', '朝阳区': '010500', '南非': '364002', '宜春': '131000', '朝鲜': '361012', '秦皇岛': '160600', '李沧区': '120306', '保亭': '101700', '庆阳': '271300', '东坑镇': '030813', '马达加斯加': '364009', '凉山': '092300', '曲江文化新区': '200216', '林芝': '300400', '淮安': '071900', '工业园区': '070306', '甘肃省': '270000', '蓟县': '051600', '丹东': '230800', '萧山区': '080208', '新洲区': '180213', '鄞州区': '080306', '大渡口区': '060200', '烟台': '120400', '天桥区': '120204', '枣庄': '121600', '巴音郭楞': '311800', '晋宁县': '250207', '湖州': '080900', '南岸区': '061500', '于洪区': '230210', '金坛市': '070506', '湖北省': '180000', '新津县': '090219', '雨花台区': '070210', '三明': '110700', '韶关': '031400', '湖南省': '190000', '新城区': '200202', '瑞典': '362010', '新疆': '310000', '白银': '270800', '娄底': '191200', '克拉玛依': '310300', '松原': '240700', '义乌': '081400', '常州': '070500', '合肥': '150200', '伊拉克': '361016', '固原': '290600', '深圳': '040000', '百色': '141100', '乌兹别克斯坦': '361014', '安徽省': '150000', '沙特阿拉伯': '361021', '珠海': '030500', '希腊': '362018', '东陵区（浑南新区）': '230202', '下关区': '070206', '广州': '030200', '长乐市': '110213', '欧洲': '362000', '石嘴山': '290500', '江夏区': '180211', '河池': '141200', '东营': '121000', '虹口区': '020800', '金水区': '170204', '北塘区': '070403', '衡水': '161200', '浦东新区': '021000', '巴彦淖尔': '280900', '房山区': '011000', '江阴市': '070409', '周至县': '200211', '上街区': '170205', '安庆': '150400', '长兴岛': '230313', '澳大利亚': '365001', '平潭县': '110211', '国外': '360000', '郴州': '190900', '石龙镇': '030806', '门头沟区': '010900', '海口': '100200', '高新区': '120211', '法国': '362002', '美洲': '363000', '沙坪坝区': '060400', '开县': '063400', '上城区': '080202', '郫县': '090216', '罗湖区': '040200', '昌平区': '011300', '苏家屯区': '230208', '咸阳': '200300', '德惠市': '240213', '张掖': '270900', '江干区': '080204', '焦作': '170500', '扬州': '070800', '西安': '200200', '溧阳市': '070507', '红河州': '251000', '黄冈': '181100', '延边': '241100', '湾里区': '130204', '崂山区': '120304', '南海区': '030603', '宁夏': '290000', '亳州': '151800', '灞桥区': '200204', '樟木头镇': '030820', '陇南': '271200', '甘南': '271500', '九龙坡区': '061100', '垫江县': '062600', '岳麓区': '190203', '西双版纳': '251500', '兴安盟': '281300', '宿州': '151600', '大兴安岭': '221400', '嵩明县': '250211', '历下区': '120201', '黄岛区': '120303', '辽宁省': '230000', '鹰潭': '130700', '迪庆': '252000', '台州': '080800', '衢州': '081200', '那曲': '300700', '埃及': '364001', '中卫': '290400', '九台市': '240212', '神农架': '181700', '高栏港经济区': '030505', '巫山县': '063700', '许昌': '171100', '宁德': '110900', '金牛区': '090203', '晋安区': '110205', '嘉定区': '021300', '延庆县': '011800', '中山区': '230302', '揭阳': '032200', '定西': '271100', '防城港': '140800', '酉阳县': '063300', '蔡甸区': '180210', '河南省': '170000', '安义县': '130208', '西青区': '050800', '萝岗区': '030210', '鹤壁': '171700', '奉化市': '080309', '香港': '330000', '杨凌': '201200', '南充': '091100', '庐江县': '150215', '平谷区': '011600', '象山县': '080311', '加纳': '364012', '阿里': '300800', '肥西县': '150214', '赞比亚': '364007', '新加坡': '361004', '黔东南': '260900', '舟山': '081100', '德国': '362003', '珠海保税区': '030507', '乐山': '090400', '瑶海区': '150201', '綦江区': '062000', '鼓楼区': '110201', '本溪': '231000', '旅顺口区': '230305', '密云县': '011700', '果洛': '320800', '大鹏新区': '040900', '莱西市': '120310', '温州': '080400', '长治': '210600', '潍坊': '120500', '宁河县': '051400', '茂名': '032300', '非洲': '364000', '江津区': '061900', '惠州': '030300', '洪梅镇': '030824', '新北区': '070504', '西宁': '320200', '北京': '010000', '市南区': '120301', '葫芦岛': '230900', '澄迈': '101300', '市北区': '120302', '河源': '032100', '铜陵': '150800', '孝感': '180900', '呼伦贝尔': '281100', '宣城': '151400', '木兰县': '220213', '马鞍山': '150500', '皇姑区': '230205', '苏州': '070300', '淮北': '151700', '鸡西': '220900', '北碚区': '061600', '南川区': '061000', '新民市': '230213', '顺义区': '011200', '未央区': '200205', '太仓': '071600', '临沂': '120800', '昆山': '070600'}
    #根据给定的城市得到城市代码，城市可以多个
    @classmethod
    def get_citynum(cls,citys):
        # 设置默认的城市代码，默认为深圳，当匹配不到城市的时候就用深圳的代码
        sznum = "040000"
        if len(citys) == 1:
            for each in cls.area:
                lis = re.findall(citys[0],each)
                if lis != []:
                    sznum = cls.area[each]
                    print("匹配到1个你选中的城市【{}】请确认是否符合要求！".format(each))
        elif len(citys) > 1:
            the_lis = []
            c = []
            for each in cls.area:
                for i in citys:
                    lis = re.findall(i,each)
                    if lis != []:
                        the_lis.append(cls.area[each])
                        c.append(each)
            sznum = ",".join(the_lis)
            cc = ",".join(c)
            print("匹配到{}个你选中的城市【{}】请确认是否符合要求！".format(len(the_lis),cc))
        else:
            print("没有填写城市，使用默认的城市【深圳】")
        return sznum

if __name__ == '__main__':
    k = city_to_num.get_citynum(["武汉","深圳"])
    print(k)
    p = city_to_num()
    l = ["北京","上海","广州","深圳","武汉","西安","南京","成都","重庆","东莞","大连","昆明",
         "长沙","合肥","宁波","郑州","济南","哈尔滨","长春","福州","天津","沈阳","杭州","苏州",
         "无锡","石家庄","惠州"]
    t = list(set(l))
    CITY_DICT = {}
    for i in t:
        CITY_DICT[i] = p.area[i]
    print(CITY_DICT)